home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / lib / xulrunner-1.9.0.14 / python / xpcom / server / __init__.py next >
Encoding:
Python Source  |  2005-12-19  |  3.4 KB  |  86 lines

  1. # ***** BEGIN LICENSE BLOCK *****
  2. # Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3. #
  4. # The contents of this file are subject to the Mozilla Public License Version
  5. # 1.1 (the "License"); you may not use this file except in compliance with
  6. # the License. You may obtain a copy of the License at
  7. # http://www.mozilla.org/MPL/
  8. #
  9. # Software distributed under the License is distributed on an "AS IS" basis,
  10. # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11. # for the specific language governing rights and limitations under the
  12. # License.
  13. #
  14. # The Original Code is the Python XPCOM language bindings.
  15. #
  16. # The Initial Developer of the Original Code is
  17. # Activestate Tool Corp.
  18. # Portions created by the Initial Developer are Copyright (C) 2000
  19. # the Initial Developer. All Rights Reserved.
  20. #
  21. # Contributor(s):
  22. #    Mark Hammond <MarkH@ActiveState.com>
  23. #
  24. # Alternatively, the contents of this file may be used under the terms of
  25. # either the GNU General Public License Version 2 or later (the "GPL"), or
  26. # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  27. # in which case the provisions of the GPL or the LGPL are applicable instead
  28. # of those above. If you wish to allow use of your version of this file only
  29. # under the terms of either the GPL or the LGPL, and not to allow others to
  30. # use your version of this file under the terms of the MPL, indicate your
  31. # decision by deleting the provisions above and replace them with the notice
  32. # and other provisions required by the GPL or the LGPL. If you do not delete
  33. # the provisions above, a recipient may use your version of this file under
  34. # the terms of any one of the MPL, the GPL or the LGPL.
  35. #
  36. # ***** END LICENSE BLOCK *****
  37.  
  38. # The xpcom.server package.
  39.  
  40. from policy import DefaultPolicy
  41. from xpcom import _xpcom
  42.  
  43. # We define the concept of a single "tracer" object - similar to the single
  44. # Python "trace hook" for debugging.  Someone can set
  45. # xpcom.server.tracer to some class/function, and it will be used in place
  46. # of the real xpcom object.  Presumably this "trace" object will delegate
  47. # to the real object, but presumably also taking some other action, such
  48. # as calling a profiler or debugger.
  49. # tracer_unwrap is a function used to "unwrap" the tracer object.
  50. # If is expected that tracer_unwrap will be called with an object
  51. # previously returned by "tracer()".
  52. tracer = tracer_unwrap = None
  53.  
  54. # Wrap an instance in an interface (via a policy)
  55. def WrapObject(ob, iid, policy = None, bWrapClient = 1):
  56.     """Called by the framework to attempt to wrap
  57.     an object in a policy.
  58.     If iid is None, it will use the first interface the object indicates it supports.
  59.     """
  60.     if policy is None:
  61.         policy = DefaultPolicy
  62.     if tracer is not None:
  63.         ob = tracer(ob)
  64.     return _xpcom.WrapObject(policy( ob, iid ), iid, bWrapClient)
  65.  
  66. # Unwrap a Python object back into the Python object
  67. def UnwrapObject(ob):
  68.     if ob is None:
  69.         return None
  70.     ret = _xpcom.UnwrapObject(ob)._obj_
  71.     if tracer_unwrap is not None:
  72.         ret = tracer_unwrap(ret)
  73.     return ret
  74.  
  75. # Create the (Python implemented) module for the Python loader.  This
  76. # Python loader will then (indirectly) create other modules for any found
  77. # .py file components
  78. def NS_GetModule( serviceManager, nsIFile ):
  79.     import loader, module
  80.     iid = _xpcom.IID_nsIModule
  81.     return WrapObject(module.Module([loader.ModuleLoader]), iid, bWrapClient = 0)
  82.  
  83. def _shutdown():
  84.     from policy import _shutdown
  85.     _shutdown()
  86.